(function () {
    var page = {
        init: function () {
            this.initLoginForm();//初始化登录框
            this.initMobileCodeAction(); //初始化获取验证码按钮
        },

        /**
         * 手机号码是否有效
         */
        mobile: false,

        initMobileCodeAction: function () {
            $('#fetch-mobile-code').click(function () {
                if ($(this).hasClass('disabled')) {
                    return false;
                }

                if (typeof MH !== 'object') {
                    console.log('基本组件MH未加载！');
                    return false;
                }
                MH.post('/api/sms/code/' + page.mobile, null, function (data) {
                    page.setMobileFeedback(data.data);

                    var count = 60;
                    $('#fetch-mobile-code').addClass('disabled').text(count + '秒后重新获取');
                    var fetchInverval = setInterval(function () {
                        --count;
                        if (count == 0) {
                            clearInterval(fetchInverval);
                            $('#fetch-mobile-code').removeClass('disabled').text('获取验证码');
                        } else {
                            $('#fetch-mobile-code').addClass('disabled').text(count + '秒后重新获取');
                        }
                    }, 1000);
                }, function (data) {

                });

                return false;
            });
        },

        setMobileFeedbackTimer: null,
        setMobileFeedback: function (message) {
            if (page.setMobileFeedbackTimer != null) {
                clearTimeout(page.setMobileFeedbackTimer);
            }
            var feedbackDiv = $('#fetch-mobile-code').next('.form-control-feedback');
            if (feedbackDiv.length > 0) {
                feedbackDiv.text(message);
            } else {
                $('#fetch-mobile-code').after('<div class="form-control-feedback">' + message + '</div>');
            }
            page.setMobileFeedbackTimer = setTimeout(function () {
                $('#fetch-mobile-code').next('.form-control-feedback').fadeOut(function () {
                    $(this).remove();
                });
            }, 3000);
            $('#mobile-code').focus();
        },

        loginErrorTimer: null,
        initLoginForm: function () {
            $('input[name="mobile"], input[name="code"]').on('keyup', page.checkMobile).change(page.checkMobile);
            $('#login-btn').click(function () {
                if ($(this).hasClass('disabled')) {
                    return false;
                }

                $('#login-form').post(function (json) {
                    var user = json.data;
                    $.cookie('auth-token', user.id);
                    window.location.href = '/article/release';
                }, function (json) {
                    if (page.loginErrorTimer != null) {
                        clearTimeout(page.loginErrorTimer);
                    }
                    $('#login-error-info').text(json.message).show();
                    page.loginErrorTimer = setTimeout(function () {
                        $('#login-error-info').fadeOut();
                    }, 3000);
                });

                return false;
            });
        },

        checkMobile: function (e) {
            var input = $(e.target);
            var name = input.attr('name');
            if(name === 'mobile') {
                $(input).isMobile(function (mobileInput) {
                    $(input).setInputSuccess();
                    page.mobile = $(mobileInput).val();
                    $('#fetch-mobile-code').removeClass('disabled');
                }, function (mobileInput) {
                    $(input).setInputError();
                    page.mobile = null;
                    $('#fetch-mobile-code').addClass('disabled');
                });
            } else if(name === 'code') {
                var code = input.val();
                if(code.length < 4) {
                    $(input).setInputError();
                } else {
                    $(input).setInputSuccess();
                }
            }

            //检查是否有错误
            if ($('.has-success').length == 2) {
                $('#login-btn').removeClass('disabled');
            } else {
                $('#login-btn').addClass('disabled');
            }
        }
    };

    page.init();
})();